package collection.test;

import java.util.*;

public class HeroMap {
    public static void main(String[] args) {
//        key-value key存储英雄名，value 存储英雄战力
        Map<String, Integer> heroMap = new HashMap<>();
//        - 添加、修改操作：
//  - Object put(Object key,Object value)：将指定key-value添加到(或修改)当前map对象中
        heroMap.put("孙悟空", 1000);
        heroMap.put("小乔", 2000);


//  - void putAll(Map m):将m中的所有key-value对存放到当前map中
        Map<String, Integer> newHeroMap = new HashMap<>();
        newHeroMap.put("孙尚香", 3000);
        newHeroMap.put("兰陵王", 4000);
        heroMap.putAll(newHeroMap);
//- 删除操作：
//  - Object remove(Object key)：移除指定key的key-value对，并返回value
//        heroMap.remove("小乔");
//  - void clear()：清空当前map中的所有数据
//        heroMap.clear();
//- 元素查询的操作：
//  - Object get(Object key)：获取指定key对应的value
        Integer value = heroMap.get("小乔");
        System.out.println(value);
//  - boolean containsKey(Object key)：是否包含指定的key,存在返回true，否则返回false
        boolean b = heroMap.containsKey("小乔");
        System.out.println(b);
//  - boolean containsValue(Object value)：是否包含指定的value，存在返回true，否则返回false
        boolean b1 = heroMap.containsValue(10000);
        System.out.println(b1);
//  - int size()：返回map中key-value对的个数
        int size = heroMap.size();
        System.out.println(size);
//  - boolean isEmpty()：判断当前map是否为空 ，非空返回false，否则返回true
        System.out.println(heroMap.isEmpty());

//  - boolean equals(Object obj)：判断当前map和参数对象obj是否相等，元素相等返回true，否则返回false
        System.out.println(newHeroMap);
        System.out.println(heroMap.equals(newHeroMap));
//- 元视图操作的方法：
//  - Set keySet()：返回所有key构成的Set集合
        Set<String> keys = heroMap.keySet();
        System.out.println(keys);
//  - Collection values()：返回所有value构成的Collection集合
        Collection<Integer> values = heroMap.values();
        System.out.println(values);
//  - Set entrySet()：返回所有key-value对构成的Set集合
        Set<Map.Entry<String, Integer>> en = heroMap.entrySet();
        System.out.println(en);


        //        获取所有key，遍历集合
        Set<String> strings = heroMap.keySet();
        for (String s : strings) {
            System.out.println(s);
        }
//        entrySet方法作用：返回所有key-value对构成的Set集合
        Set<Map.Entry<String, Integer>> entries = heroMap.entrySet();
        Iterator<Map.Entry<String, Integer>> iterator = entries.iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, Integer> next = iterator.next();
            System.out.println(next.getKey() + ":" + next.getValue());
        }
        System.out.println("=======================================");

        for (Map.Entry<String, Integer> entry : entries) {
            System.out.println(entry.getKey() + ":" + entry.getValue());
        }
    }
}
